package com.zhiyume.service.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *
 * @description
 * @author: luzh3
 * @mail: luzh3@zhiyume.com
 * @date: 2015年7月24日
 */
public class StringUtil {

	/**
	 * 字符串是否为空
	 *
	 * @param str
	 * @return
	 */
	public static boolean isBlank(String str) {
		if (null == str) {
			return true;
		}
		if ("".equals(str.trim()) || "null".equals(str)) {
			return true;
		}
		return false;
	}

	/**
	 * 字符串是否不为空
	 *
	 * @param str
	 * @return
	 */
	public static boolean isNotBlank(String str) {
		if (isBlank(str)) {
			return false;
		} else {
			return true;
		}
	}

	/**
	 * 判断密码是否为空（允许空格）
	 *
	 * @param pwd
	 * @return
	 */
	public static boolean isPWDBlank(String pwd) {
		if (null == pwd) {
			return true;
		}
		if ("".equals(pwd)) {
			return true;
		}
		return false;
	}

	/**
	 * 格式化字符串
	 *
	 * @param str
	 * @return
	 */
	public static String formatStr(String str) {
		if (isBlank(str)) {
			return "";
		}
		return str;
	}

	/**
	 * 格式化long型数据
	 *
	 * @param l
	 * @return
	 */
	public static String formatStr(long l) {
		if (0 == l) {
			return "";
		}
		return String.valueOf(l);
	}

	/**
	 * 格式化int型数据
	 *
	 * @param i
	 * @return
	 */
	public static String formatStr(int i) {
		if (0 == i) {
			return "";
		}
		return String.valueOf(i);
	}

	/**
	 * arr To Str
	 *
	 * @param arr
	 * @param split
	 * @return
	 */
	public static String arr2Str(String[] arr, String split) {
		StringBuffer sbff = new StringBuffer();
		if (isBlank(split)) {
			split = "|";
		}
		if (null != arr
				&& arr.length > 0) {
			for (String str : arr) {
				sbff.append(split).append(str);
			}
			return sbff.substring(1);
		}
		return null;
	}

	/**
	 * arr To Str 默认|分隔符
	 *
	 * @param arr
	 * @return
	 */
	public static String arr2Str(String[] arr) {
		return arr2Str(arr, null);
	}

	/**
	 * arr是否包含str
	 *
	 * @param str
	 * @param arr
	 * @return
	 */
	public static boolean contains(String str, String[] arr) {
		if (isBlank(str)) {
			return false;
		}
		if (null == arr
				|| arr.length == 0) {
			return false;
		}
		for (String s : arr) {
			if (s.equalsIgnoreCase(str)) {
				return true;
			}
		}
		return false;
	}

	/**
	 * str To arr
	 *
	 * @param str
	 * @param split
	 * @return
	 */
	public static String[] str2Arr(String str, String split) {
		if (isBlank(str)) {
			return null;
		}
		return str.split(split);
	}

	/**
	 * str To arr 默认|分隔符
	 *
	 * @param str
	 * @return
	 */
	public static String[] str2Arr(String str) {
		return str2Arr(str, "\\|");
	}

	/**
	 * 判断是否是数字
	 *
	 * @param str
	 * @return
	 */
	public static boolean isNumeric(String str) {
		Pattern pattern = Pattern.compile("[0-9]*");
		Matcher isNum = pattern.matcher(str);
		if (!isNum.matches()) {
			return false;
		}
		return true;
	}


	public static boolean IsHasSQLInject(String str) {
		Boolean isHasSQLInject = false;
		if(isNotBlank(str)) {
			//字符串中的关键字更具需要添加
			String inj_str = "'|and|exec|union|create|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|xp_|or|--|+";
			str = str.toLowerCase().trim();
			String[] inj_str_array = inj_str.split("|");
			for (String sql : inj_str_array) {
				if (str.contains(sql)) {
					isHasSQLInject = true;
					break;
				}
			}
		}
		return isHasSQLInject;
	}

}
